With the accelerating growth of Internet and intranet communication, high-bandwidth applications (such as streaming video), and large information databases, the need for networked storage systems has increased dramatically. One networked storage system architecture, the storage area network (SAN), provides a highly scalable, flexible topology that many experts are calling the future of enterprise storage.
In a SAN, users access the data on the storage elements through host ports. The host ports may be located in close proximity to the storage elements or they may be several miles away. In either case, the connection between the storage element controllers and the host ports is known as the SAN fabric. This fabric is often composed of a fiber channel interconnect, although, it may be any type of serial interconnect.
The storage elements used in SANs are often hard disk drives. Unfortunately, when a drive fails, the data stored on the drive is inaccessible. In a system where access to data is imperative, there must be a backup system. Most backup systems today involve storing the data on multiple disk drives so that, if one drive fails, another drive that contains a copy of the data is available. These multiple disk drives are known as redundant arrays of independent disks (RAIDs). The addition of RAIDs and their associated RAID controllers make a SAN more reliable and fault tolerant. Because of its inherent advantages, RAID has quickly become an industry standard. However, there are still large groups of disk drives available for networked storage without the RAID features. These groups of disk drives are now referred to as “just a bunch of disks” (JBOD) to distinguish them from their RAID counterparts.
Storage systems often employ the use of several storage devices to redundantly store data (e.g., mirroring) in case one or more storage devices fail. Mirroring is a form of RAID known as RAID 1. Mirroring is the process by which data stored on one drive is copied or mirrored to another drive; therefore, the two drives are exact copies or mirrors of each other. In a like manner, several storage devices may be used in parallel to increase performance (striping). Striping is another aspect of RAID and is the process of breaking up consecutive lines of data and writing them on more than one drive. When the data needs to be accessed, all of the drives that contain a piece of the data may simultaneously send their portion to the requesting controller. The controller then arranges the data from each of the drives in order and sends it to the requesting host. However, it is inefficient for hosts to be required to keep track of the various logical and physical combinations, so a layer of abstraction is needed. This layer of abstraction is the concept of storage virtualization. Storage virtualization hides the internal functions of a storage subsystem or service from applications, computer servers, or general network resources for the purpose of enabling application and network independence from the management of storage or data. In a virtualized SAN architecture, hosts request access to virtual volumes, which may consist of any number of storage elements controlled by any number of RAID controllers. This allows for much greater flexibility in storage resource management, and allows volume size, performance, and reliability to change as users' needs change.
The virtualization layer is usually formed of virtualizer elements whose function is to translate virtual volume requests into logical volume requests and send those requests to the corresponding storage controllers. This process, of course, takes some amount of overhead in the form of processing time. Processing cycles are required to translate the virtual addresses to their logical forms. Virtualizers also account for increased system latency because they constitute another layer of additional processing.
Still other problems with today's virtualizers include excessive interconnect traffic. Interconnect traffic includes data flowing to and from the disks, controllers, and virtualizers. In some cases, excessive interconnect traffic may occur when redundant data is sent over the interconnect multiple times. For example, a storage controller may send data to a disk it controls and send the same data to another controller that, in turn, sends the data to a disk under its control. The same data has now traversed the interconnect twice. Excessive interconnect traffic may limit the interconnect bandwidth and cause system performance to decrease. Thus there is a need for improved virtualization implementation in a networked storage system that reduces command latencies.
An example of a method for improving command latencies is described in U.S. Application Publication No. 2003/0084252, entitled, “Disk Drive Employing Adaptive Flushing of a Write Cache.” The '252 application describes a method embodied as software or firmware code that permits the adaptation of disk drives employing write-back caching to reduce the possibility of lost data from the write cache. In one embodiment, the method is integrated with the host operating system software employed by a host computer coupled to the disk drive. The method issues write requests to the disk drive as it receives them from the applications running on the host computer. The disk drive processes the issued requests as it is designed to, using write-back caching techniques. After each request is cached, the disk drive controller acknowledges the write request back to the host. The host delays communicating the acknowledgements back to their originating applications until the data has been actually written to the disk media. Because write-back caching does not commit cached requests to disk on a regular basis, the host software simply forces the disk drive to execute cached write requests on a regular basis using a CACHE_FLUSH command. The disk drive employs standard throughput optimization techniques to reduce the overall latency of the disk accesses. When the rate of the request stream is low, the host simply issues a flush command after issuing each write request to the drive. As the rate of the request stream increases, the host lets the requests pool in the cache rather than at the host. It then issues a flush command when the pool size reaches a number where the incremental reduction in throughput to the disk media during the flush no longer offsets the incremental increase in request latency due to the pooling time. When the flush is complete, the disk drive notifies the host, and the host releases the acknowledgements of all of the pooled requests to their originating applications.
The system described in the '252 application focuses on reducing latency and maintaining data integrity in a networked storage system, such as a SAN for write commands and write data. Although the '252 application describes a method of using write caching and acknowledging back to the host for increased system performance, it does not describe how to increase SAN performance for read commands. Furthermore, it does not describe a method for using cache in a networked storage virtualization layer. The system described in the '252 application also fails to provide a description of the virtualization process and how it may be produced or created.